Welcome![Sign In][Sign Up]
Location:
Search - ping sock_raw

Search list

[WinSock-NDISSOCK_RAW

Description: 用SOCK_RAW编写的ping程序 C++语言 只有简单的ping功能
Platform: | Size: 14743 | Author: 果汁红 | Hits:

[Internet-Network一个判断远程主机存活程序代码

Description: 一个判断远程主机存活程序代码(ping) #include #include #include #include #include "winsock.h" #pragma comment(lib,"Ws2_32"); #define SEND_SIZE 32 #define PACKET_SIZE 4096 #define ICMP_ECHO 8 #define ICMP_ECHOREPLY 0 struct icmp { unsigned char icmp_type; unsigned char icmp_code; unsigned short icmp_cksum; unsigned short icmp_id; unsigned short icmp_seq; unsigned long icmp_data; }; struct ip { unsigned char ip_hl:4; unsigned char ip_v:4; unsigned char ip_tos; unsigned short ip_len; unsigned short ip_id; unsigned short ip_off; unsigned char ip_ttl; unsigned char ip_p; unsigned short ip_sum; unsigned long ip_src; unsigned long ip_dst; }; unsigned char sendpacket[PACKET_SIZE]; unsigned char recvpacket[PACKET_SIZE]; struct sockaddr_in dest_addr; struct sockaddr_in from_addr; int sockfd; int pid; unsigned short cal_chksum(unsigned short *addr,int len); int pack(int pack_no); int unpack(unsigned char *buf,int len); void send_packet(void); void recv_packet(void); void main(int argc,char *argv[]) { struct hostent *host; struct protoent *protocol; WSADATA wsaData; int timeout=1000; int SEND_COUNT=4; int i; char *par_host; par_host=argv[argc-1]; //IP赋值 switch(argc) { case 2: break; case 3: if(strcmp(argv[1],"-t")==0) { SEND_COUNT=10000; break; } //fall through default: printf("usage: %s [-t] Host name or IP address\n",argv[0]); exit(1); } if(WSAStartup(0x1010,&wsaData)!=0) { printf("wsastartup error\n"); exit(1); } if( (protocol=getprotobyname("icmp") )==NULL) { printf("getprotobyname error\n"); exit(1); } /* printf("%s\n",protocol->p_name); printf("%s\n",protocol->p_aliases); printf("%d\n",protocol->p_proto); system("pause"); */ if( (sockfd=socket(AF_INET,SOCK_RAW,protocol->p_proto) )<0) { printf("socket error\n"); exit(1); } if(setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout))h_length); //resolve address to hostname if(host=gethostbyaddr(host->h_addr,4,PF_INET)) par_host=host->h_name; // //printf("%s\n",par_host); // } else if( dest_addr.sin_addr.s_addr=inet_addr(par_host)==INADDR_NONE) { printf("Unkown host %s\n",par_host); exit(1); } pid=getpid(); /* printf("%d\n",pid); system("pause"); */ printf("Pinging %s [%s]: with %d bytes of data:\n\n",par_host,inet_ntoa(dest_addr.sin_addr),SEND_SIZE); for(i=0;i1) { sum+=*w++; nleft-=2; } if( nleft==1) { *(unsigned char *)(&answer)=*(unsigned char *)w; sum+=answer; } sum=(sum>>16)+(sum&0xffff); sum+=(sum>>16); answer=~sum; return answer; } //打包 int pack(int pack_no) { int packsize; struct icmp *icmp; packsize=8+SEND_SIZE; icmp=(struct icmp*)sendpacket; icmp->icmp_type=ICMP_ECHO; icmp->icmp_code=0; icmp->icmp_cksum=0; icmp->icmp_seq=pack_no; icmp->icmp_id=pid; icmp->icmp_data=GetTickCount(); icmp->icmp_cksum=cal_chksum( (unsigned short *)icmp,packsize); /*校验算法*/ return packsize; } //解包 int unpack(unsigned char *buf,int len) { struct ip *ip; struct icmp *icmp; double rtt; int iphdrlen; ip=(struct ip *)buf; iphdrlen=ip->ip_hl*4; icmp=(struct icmp *)(buf+iphdrlen); if( (icmp->icmp_type==ICMP_ECHOREPLY) && (icmp->icmp_id==pid) ) { len=len-iphdrlen-8; rtt=GetTickCount()-icmp->icmp_data; printf("Reply from %s: bytes=%d time=%.0fms TTL=%d icmp_seq=%u\n", inet_ntoa(from_addr.sin_addr), len, rtt, ip->ip_ttl, icmp->icmp_seq); return 1; } return 0; } //发送 void send_packet() { int packetsize; static int pack_no=0; packetsize=pack(pack_no++); if( sendto(sockfd,(char *)sendpacket,packetsize,0,(struct sockaddr *)&dest_addr,sizeof(dest_addr) )=0) success=unpack(recvpacket,n); else if (WSAGetLastError() == WSAETIMEDOUT) { printf("Request timed out.\n"); return; } }while(!success); } UID5380 帖子239 精华0 积分1289 阅读权限40 来自软件学院 在线时间81 小时 注册时间2006-5-22 最后登录2007-2-24 查看详细资料 TOP
Platform: | Size: 5881 | Author: shuiyuan313 | Hits:

[Internet-Networkping的源程序

Description: 这是我课程设计的一个程序,程序实现echo request icmp 的发送和echo reply icmp 的接收,以发现网络中在线主机以及测量与其他主机的平均往返时间-This is my curriculum design a procedure, Program icmp echo request and send the reply icmp echo reception, to detect network and host online measurement and other hosts of the average journey time
Platform: | Size: 4096 | Author: 陈建锋 | Hits:

[Internet-NetworkSOCK_RAW

Description: 用SOCK_RAW编写的ping程序 C++语言 只有简单的ping功能-SOCK_RAW prepared using ping procedures C++ Language only simple ping function
Platform: | Size: 1020928 | Author: 果汁红 | Hits:

[Windows Developping

Description: 编程实现ping操作,是一个一错的例子,我专门从配套光盘上挑选的-aaaaaaaaaaaaaaaaa
Platform: | Size: 34816 | Author: hufangbin | Hits:

[Internet-NetworkPing

Description: 实现GUI界面的ping功能,与DOS下的ping命令一样-GUI interface to achieve the ping function, and the ping command under DOS as
Platform: | Size: 195584 | Author: 李明 | Hits:

[Internet-Networkping

Description: ping命令看似小小的一个工具,但它带有许多参数,要完全掌握它的使用方法还真不容易,要达到熟练使用则更是难下加难,但不管怎样我们还得来看看它的源程序吧!-a tool may seem a little ping command, but it comes with a number of parameters, to fully grasp its really not easy to use, to achieve even more difficult under the skilled use of additional difficulties, but in any case we have to look at Its source code now!
Platform: | Size: 2048 | Author: chao | Hits:

[Delphi VCLCPing

Description: PING的可视化显示源码,可扩展DOS命令下的信息展示。-PING visual display source, scalable, information display under DOS commands.
Platform: | Size: 212992 | Author: | Hits:

[Embeded Linuxping

Description: 这自己编写我们平时都用到的一个平命令,大家可以使用一下-This is all we usually use to write your own a flat command, we can use what
Platform: | Size: 3072 | Author: 全字 | Hits:

[Internet-Networkping.tar

Description: Send echo ping requests
Platform: | Size: 1024 | Author: Camilo | Hits:

[Internet-NetworkPING

Description: C++程序。用来测试ping值。计算机网络的入门程序-C++ program. Used to test the ping values. Computer network entry procedures
Platform: | Size: 2048 | Author: 袁昊 | Hits:

[Internet-Networkping

Description: 用c/c++实现网络ping功能,希望对网络编程得人有所帮助吧。-With c/c++ functions for network ping, I hope it will help people doing network programe.
Platform: | Size: 2596864 | Author: 希克服 | Hits:

CodeBus www.codebus.net